#pragma once

#include <cstdint>

class HashPolicy{
using Byte = uint8_t;
virtual uint64_t Hash(Byte* data,std::size_t len)=0;
};

class FNV_1a :HashPolicy {
  using Byte = uint8_t;
  static constexpr uint64_t c_offsetBasis = 14695981039346656037;
  static constexpr uint64_t c_FNVPrime = 1099511628211;
 public:
  uint64_t Hash(Byte* data, std::size_t len) override;
};